其實測試很簡單,如Day01提到的在『編輯器裡寫完code後再到瀏覽器按F5』,所以我們可以寫出我們的第一個測試
找個資料夾打開檔案為 index.php,並撰寫以下程式碼
<?php
echo 'hello world!!!';
執行 php index.php,我們就可以看到輸出結果如下
❯ php index.php
hello world!!!
我們就可以用『眼睛』來確認程式執行是否正確,這是不是和『編輯器裡寫完code後再到瀏覽器按F5』幾乎一模一樣,只是我們把瀏覽器按F5改為執行php index.php
,用這樣的方式進行開發(也等同於測試),就可以大幅度的減少瀏覽器 reload 的時間,也等同於加速開發時間啊(每次reload要花費2秒來計,每次節省1秒,每執行100次就省了100秒啊
)
應該發現只有寫完程式並沒有任何的驗證啊!沒錯!以上的程式碼只是讓大家知道我們可以直接執行來進行開發,知道了這樣的開發方式後,我們就可以把程式碼改為
<?php
// index.php
class HelloWorld {
public function greeting() {
return 'hello world!!!';
}
}
var_dump((new HelloWorld())->greeting());
再次執行程式會得到以下的結果
❯ php index.php
hello world!!!
咦?不是一樣嗎?我們可以接著再把程式碼進行修改,因為我們不想用眼睛來確認程式是否正確,所以程式碼可以改為
<?php
// index.php
class HelloWorld {
public function greeting() {
return 'hello world!!!';
}
}
var_dump("hello world!!!" === (new HelloWorld())->greeting());
接著再次執行 php index.php,會得到以下結果
❯ php index.php
bool(true)
hello world!!!
啊所以我們可以再把程式進行改寫
<?php
// HelloWorld.php
class HelloWorld
{
public function greeting()
{
return 'hello world!!!';
}
}
<?php
// index.php
require_once(__DIR__ . '/HelloWorld.php');
echo (new HelloWorld())->greeting();
<?php
// HelloWorldTest.php
require_once(__DIR__ . '/HelloWorld.php');
var_dump("hello world!!!" === (new HelloWorld())->greeting());
這樣把檔案拆成三個檔案後,我們就可以得到
當我們把確認程式執行結果從瀏覽器移到 cli 後會發現不但等待時間減少了,其餘的和平常開發的形式一模一樣,再透過簡單的重構可以再讓程式獲得保護,而且還是用很土炮的方式來進行,所以當程式有誤的時候我們沒有辦法得到更多的錯誤提示,下一篇我們再導入 PHPUnit 再進行一次開發看會得到什麼樣的體驗。